package reflect;

import pojo.Person;

import java.lang.reflect.Method;


public class ReflectDemo2 {
    public static void main(String[] args) {
        Class cls = Person.class;//获取Person类对象
        //通过类对象获取其表示的String的相关信息
        String name = cls.getName();
        System.out.println("Person的包类名:"+name);
        name = cls.getSimpleName();//Simple 简单
        System.out.println("Person的类名:"+name);
        name = cls.getPackage().getName();
        System.out.println("Person的包名:"+name);
        //Method 是方法对象
        //获取当前cls所表示的类的所有的公开方法(包含从超类中继承的方法)
        Method[] methods = cls.getMethods();
        System.out.println("Person中的公开方法有:"+methods.length+"个");
        for (Method method : methods) {
            //获取方法名
            System.out.println("公开方法:"+method.getName());
        }
        System.out.println("================================================");
        //获取cls所表示的类的所有的类自身定义的方法(包含私有方法,不包含继承的方法)
        methods = cls.getDeclaredMethods();
        System.out.println("Person中的方法有:"+methods.length+"个");
        for (Method method : methods) {
            //获取方法名
            System.out.println("方法:"+method.getName());
        }
    }
}
